package com.mpgame.database.mysql.mapper;

import com.mpgame.database.mysql.model.BaseEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface BaseMapper<T extends BaseEntity> {
    
    /**
     * 插入实体
     */
    int insert(T entity);
    
    /**
     * 根据ID删除
     */
    int deleteById(@Param("id") Long id);
    
    /**
     * 根据ID查询
     */
    T selectById(@Param("id") Long id);
    
    /**
     * 更新实体
     */
    int updateById(T entity);
    
    /**
     * 查询所有
     */
    List<T> selectAll();
    
    /**
     * 根据状态查询
     */
    List<T> selectByStatus(@Param("status") Integer status);
    
    /**
     * 软删除（更新状态为0）
     */
    int softDeleteById(@Param("id") Long id);
    
    /**
     * 批量插入
     */
    int batchInsert(@Param("list") List<T> list);
    
    /**
     * 批量更新
     */
    int batchUpdate(@Param("list") List<T> list);
}